<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务，帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件，不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types = 1);

namespace app\common\model\ding;

use cores\BaseModel;

/**
 * 模型类
 * Class Cart
 * @package app\common\model
 */
class Order extends BaseModel {
	// 定义表名
	protected $name = 'ding_order';

	// 定义主键
	protected $pk = 'id';
	// 追加字段
	protected $append = ['sex_label', 'is_past', 'status_text', 'date_text', 'category_name', 'state_text', 'type_text'];

	public function getDateTextAttr($value, $data) {
		return Date('Y-m-d H:i', $data['create_time']);
	}

	public function getSexLabelAttr($value, $data) {
		switch ($data['sex']) {
		case 1:
			$sex = '先生';
			break;
		case 2:
			$sex = '女士';
			break;
		default:
			$sex = '';
			break;
		}
		return $sex;
	}
	public function getStatusTextAttr($value, $data) {
		switch ($data['status']) {
		case 10:
			$status = '已预订';
			break;
		case 20:
			$status = '客到';
			break;
		case 30:
			$status = '已取消';
			break;
		default:
			$status = '未知';
			break;
		}
		return $status;
	}
	public function getStateTextAttr($value, $data) {
		switch ($data['order_status']) {
		case 10:
			// if ($data['pay_status'] == 10) {
			// 	$status = '待付款';
			// } else {
			// 	$status = '待使用';
			// }
			$status = '已确认';

			break;
		case 20:
			$status = '拒绝';
			break;
		case 30:
			$status = '已取消';
			break;
		case 40:
			$status = '完成';
			break;
		case 50:
			$status = '预订失败';
			break;
		default:
			$status = '待商家确认';
			break;
		}
		return $status;
	}
	public function getTypeTextAttr($value, $data) {
		switch ($data['type']) {
		case 1:
			$type = '午餐';
			break;
		case 2:
			$type = '晚餐';
			break;
		default:
			$type = '';
			break;
		}
		return $type;
	}
	public function getCategoryNameAttr($value, $data) {
		switch ($data['category_id']) {
		case 2:
			$type = '卡座';
			break;
		case 1:
			$type = '包厢';
			break;
		default:
			$type = '';
			break;
		}
		return $type;
	}

	public function getIsPastAttr($value, $data) {
		$is_past = 0;
		$time = strtotime($data['date'] . ' ' . $data['time']);
		if ($time <= time()) {
			$is_past = 1;
		}
		return $is_past;
	}

	public static function detail($where, array $with = []) {
		is_array($where) ? $filter = $where : $filter['id'] = (int) $where;
		return self::get($filter, $with);
	}
	public function letters() {

		return $this->hasOne('Letter', 'type_id', 'letter_type');

	}
	public function clerk() {
		$module = self::getCalledModule();
		return $this->hasOne("app\\{$module}\\model\\store\\shop\\Clerk", 'clerk_id', 'clerk_id');

	}

	public function shop() {
		$module = self::getCalledModule();
		return $this->hasOne("app\\{$module}\\model\\store\\Shop", 'shop_id', 'shop_id');

	}
	public function user() {
		$module = self::getCalledModule();
		return $this->hasOne("app\\{$module}\\model\\User", 'user_id', 'user_id');

	}
	public function goods() {
		return $this->hasMany('OrderGoods', 'order_id', 'id');

	}

	/**
	 * 关联
	 * @return \think\model\relation\HasOne
	 */
	public function content() {
		return $this->hasMany('OrderContent', 'order_id', 'id');

	}
	/**
	 * 餐位
	 * @return \think\model\relation\HasOne
	 */
	public function seats() {
		return $this->hasMany('OrderSeat', 'order_id', 'id');

	}

}